<?php
/**
 * Created by PhpStorm.
 * User: Administrator
 * Date: 2018/5/23
 * Time: 15:46
 */
//所有控制器的父类，用来给控制器继承,不区分前后台
//前后台都要用的功能放到这个控制器里面

namespace Shop;

if(!defined("SHOP")){
    header("Location:../index.php");
}

class Controller{

    //加载视图类
    public $view;

    public function __construct()
    {
        //初始化视图
        $this->view=new View();

        //开启session
        session_start();
    }

    //验证码方法
    public function yzm(){
        $img=imagecreatetruecolor(150,100);
        $bg=imagecolorallocate($img,mt_rand(200,250),mt_rand(200,250),mt_rand(200,250));
        imagefill($img,0,0,$bg);
        //干扰点
        for($i=0;$i<11;$i++){
            $dot=imagecolorallocate($img,mt_rand(150,200),mt_rand(150,200),mt_rand(150,200));

            imagestring($img,mt_rand(1,6),mt_rand(0,150),mt_rand(0,50),'*',$dot);
        }
        //内容生成随机数
        $list1=range(0,9);
        $list2=range('a','z');
        $list=array_merge($list1,$list2);
        shuffle($list);
        $arr=array_rand($list,4);
        $str=array();
        foreach($arr as $k=>$v){
            $str[]=$list[$v];
        }
        //str 最终的随机数
        $yzmstr='';
        for($i=0;$i<count($str);$i++){
            $strbg=imagecolorallocate($img,mt_rand(50,100),mt_rand(50,100),mt_rand(50,100));
            //写入
            imagettftext($img,20,45,10+$i*20,mt_rand(40,80),$strbg,SHOP_PUBLIC.'simsun.ttc',$str[$i]);
            $yzmstr.=$str[$i];
        }
        //保存验证码到session
        //存入验证码的时候注意 需要前后台区分开来
        $_SESSION[SHOP]['yzm']=$yzmstr;

        header("Content-type:image/png");
        imagepng($img);
    }

    //跳转方法
    //msg ： 提示的信息
    //$c :   跳转的控制器
    //$f :   跳转的控制器方法
    //$time :   自动跳转等待的时间
    public function success($msg,$c='',$f=SHOP_F,$time=3){
        //当前控制器
        if($c==''){$c=str_replace('Controller','',SHOP_C);}

        $url=SHOP_PUBLIC.'msg.html'; //提示页面的路径
        if(SHOP=='Admin'){
            $loca="/admin.php?C=$c&F=$f"; //跳转的地址
        }else{
            $loca="/index.php?C=$c&F=$f"; //跳转的地址
        }
        include $url;
        exit;
    }

    //跳转方法：不需要显示页面，直接跳转
    public function redirect($c,$f){
        if(SHOP=='Admin'){
            header("Location:/admin.php?C=$c&F=$f");
        }else{
            header("Location:/index.php?C=$c&F=$f");
        }
    }

    //图片上传
    //$file  ： 图片数据 $path: 保存路径
    public function imgFile($file,$path){
        if($file['error']==0){
            //得到文件后缀
            $name=$file['name'];
            $name=explode('.',$name);
            $name=$name[count($name)-1];
            //文件保存路径
            $pathName=$path.time().rand().'.'.$name;
            if(move_uploaded_file($file['tmp_name'],$_SERVER['DOCUMENT_ROOT'].$pathName)){
                return $pathName;
            }else{
                return false;
            }
        }else{
            return false;
        }
    }

    //定义方法返回数据给ajax
    public function retuAjax($arr){
        echo json_encode($arr);exit;
    }

//    定义 发送邮件公共方法
//$to : 收件地址
//$content :内容
//title : 标题
    public function sendMailer($to, $content,$title){
        $mail = new \PHPMailer();
        /*服务器相关信息*/
        $mail->IsSMTP();    //设置使用SMTP服务器发送
        $mail->SMTPAuth   = true;     //开启SMTP认证
        // $mail->Host       = 'smtp.sina.com';    //设置 SMTP 服务器,自己注册邮箱服务器地址
        // 需要注意的是，并不是所有的邮件服务器商都提供免费的SMTP服务
        $mail->Host       = $GLOBALS['Config']['em_host'];    //设置 SMTP 服务器,自己注册邮箱服务器地址
        //需要自己手工的配置
        $mail->Username   = $GLOBALS['Config']['em_user'];  	//发信人的邮箱用户名
        $mail->Password   = $GLOBALS['Config']['em_pass'];  //发信人的邮箱授权码

        /*内容信息*/
        $mail->IsHTML(true); 	//指定邮件内容格式为：html
        $mail->CharSet    ="UTF-8";	//编码
        // $mail->From       = 'gogery@sina.com';	 //发件人完整的邮箱名称

        // 可以自己手工的配置
        $mail->From       = $GLOBALS['Config']['em_user'];	 //【注意】发件人完整的邮箱名称
        $mail->FromName   = $GLOBALS['Config']['em_user'];	 //发信人署名
        $mail->Subject    = $title;  	 //信的标题
        $mail->MsgHTML( $content );  	//发信主体内容
        // $mail->AddAttachment("./img/linux.png"); //附件

        //发送邮件 添加收件人地址
        $mail->AddAddress( $to );  //收件人地址

        //使用send函数进行发送
        if( $mail->Send() ) {

           return true;
            // return true;

        } else {
            //如果发送失败，则返回错误提示
            return false;
//            exit($mail->sErrorInfo);
//            echo "发送邮件失败！";
            // return false;
        }
    }
}